package com.hongfeng.web.item.tag;

/**
 * <描述> 操作符的类，包括空值、不为空、等于、不等于、小于等于、大于等于、小于、大于、in、not in、like、not like等
 * 
 * @author llc
 * @since 1.0
 * @copyright 
 * @initialize <实例化方法>
 * @date 2011-5-11
 * @log <重大修改日志，格式：YYYY-MM-DD 修改人 修改内容>
 */
public enum FieldOperator {
	/**
	 * 为空
	 */
	IS_NULL("a", "IS NULL", "为空", 1),
	/**
	 * 不为空
	 */
	IS_NOT_NULL("b", "IS NOT NULL", "不为空", 1),
	/**
	 * 等于，精确查询
	 */
	EQUAL("c", "=", "等于", 2),
	/**
	 * 不等于
	 */
	NOT_EQUAL("d", "<>", "不等于", 2),
	/**
	 * 小于等于
	 */
	LESS_EQUAL("e", "<=", "小于等于", 2),
	/**
	 * 大于等于
	 */
	LARGER_EQUAL("f", ">=", "大于等于", 2),
	/**
	 * 小于
	 */
	LESS("g", "<", "小于", 2),
	/**
	 * 大于
	 */
	LARGER("h", ">", "大于", 2),
	/**
	 * 在...之内
	 */
	IN("i", "IN", "在...之内", 2),
	/**
	 * 不在...之内
	 */
	NOT_IN("j", "NOT IN", "不在...之内", 2),
	/**
	 * Like像，默认模糊查询
	 */
	LIKE("k", "LIKE", "包含", 2),
	/**
	 * Like像，左匹配模式，查询以字符串值为开头的所有记录
	 */
	LIKE_START("l", "LIKE", "左包含", 2),
	/**
	 * Like像，右匹配模式，查询以字符串值为结尾的所有记录
	 */
	LIKE_END("m", "LIKE", "右包含", 2),
	/**
	 * Like像，默认模糊查询，忽略大小写
	 */
	ILIKE("n", "LIKE", "包含(忽略大小写)", 2),
	/**
	 * Like像，左匹配模式，查询以字符串值为开头的所有记录，忽略大小写
	 */
	ILIKE_START("o", "LIKE", "左包含(忽略大小写)", 2),
	/**
	 * Like像，右匹配模式，查询以字符串值为结尾的所有记录，忽略大小写
	 */
	ILIKE_END("p", "LIKE", "右包含(忽略大小写)", 2),
	/**
	 * Not Like不像，默认模糊查询
	 */
	NOT_LIKE("q", "NOT LIKE", "不包含", 2),
	/**
	 * Not Like不像，左匹配模式，查询不以字符串值为开头的所有记录
	 */
	NOT_LIKE_START("r", "NOT LIKE", "非左包含", 2),
	/**
	 * Not Like不像，右匹配模式，查询不以字符串值为结尾的所有记录
	 */
	NOT_LIKE_END("s", "NOT LIKE", "非右包含", 2),
	/**
	 * Not Like不像，默认模糊查询，忽略大小写
	 */
	NOT_ILIKE("t", "NOT LIKE", "不包含(忽略大小写)", 2),
	/**
	 * Not Like不像，左匹配模式，查询不以字符串值为开头的所有记录，忽略大小写
	 */
	NOT_ILIKE_START("u", "NOT LIKE", "非左包含(忽略大小写)", 2),
	/**
	 * Not Like不像，右匹配模式，查询不以字符串值为结尾的所有记录，忽略大小写
	 */
	NOT_ILIKE_END("v", "NOT LIKE", "非右包含(忽略大小写)", 2),
	/**
	 * BETWEEN，在a,b之间，是三目运算，需要传入两个参数
	 */
	BETWEEN("w", "BETWEEN", "在...之间", 3);
	/**
	 * 操作符
	 */
	private final String opertor;
	/**
	 * 运算符目数
	 */
	private final int dimension;
	/**
	 * 是否忽略大小写
	 */
	private final boolean ignoreCase;
	/**
	 * 中文名
	 */
	private final String text;
	/**
	 * 保存的值
	 */
	private final String value;

	private FieldOperator(String value, String opertor, String text, int dimension) {
		this.value = value;
		this.opertor = opertor;
		this.text = text;
		this.ignoreCase = false;
		this.dimension = dimension;
	}

	@Override
	public String toString() {
		return this.text;
	}

	/**
	 * <方法描述>获取操作符号，比如=,like,<>等等
	 * 
	 * @return
	 */
	public String getOpertor() {
		return opertor;
	}

	/**
	 * <方法描述>获取操作符的中文名
	 * 
	 * @return
	 */
	public String getText() {
		return text;
	}

	/**
	 * <方法描述>获取操作符的数据库存取值
	 * 
	 * @return
	 */
	public String getValue() {
		return value;
	}

	/**
	 * <方法描述>获取是否忽略大小写
	 * 
	 * @return
	 */
	public boolean isIgnoreCase() {
		return ignoreCase;
	}

	/**
	 * <方法描述>获取标识操作符是几目运算符，如IS NULL是一目运算符，=是双目运算符，Between是三目运算符
	 * 
	 * @return
	 */
	public int getDimension() {
		return dimension;
	}

}